using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FiltronASP.Models.Validators;

namespace FiltronASP.Models
{
    /// <summary>
    /// Fragment klasy odpowiadajacy tabeli <code>Pages</code>.
    /// </summary>
    [MetadataType(typeof(PageValidation))]
    public partial class Page
    {
    }

    /// <summary>
    /// Klasa z walidacja dla niektorych danych klasy <code>Page</code>.
    /// </summary>
    public class PageValidation
    {

        [HiddenInput(DisplayValue = false)]
        public int page_id { get; set; }

        [Required(ErrorMessage = "Nazwa strony jest wymagana.")]
        [StringLength(190, ErrorMessage = "Nazwa strony nie powinna być dłuższa niż 190 znaków.")]
        public string page_name { get; set; }

        [Required(ErrorMessage = "Alias strony jest wymagany.")]
        [StringLength(190, ErrorMessage = "Alias strony nie powinien być dłuższy niż 190 znaków.")]
        [AlpaNumeric(ErrorMessage = "Alias strony nie powinien zawierać znaków specjalnych.")]
        public string page_alias { get; set; }

        [Required(ErrorMessage = "Informacja na temat numeru porządkowego strony jest wymagana.")]
        [NotNegativeNumber(ErrorMessage = "Wprowadzona wartość powinna być nieujemna.")]
        public int page_ordering { get; set; }

        [Required(ErrorMessage = "Informacja na temat publikacji strony jest wymagana.")]
        public bool page_published { get; set; }

        [Required(ErrorMessage = "Link do strony jest wymagany.")]
        [StringLength(190, ErrorMessage = "Link strony nie powinien być dłuższy niż 190 znaków.")]
        public string page_link { get; set; }

        [Required(ErrorMessage = "Informacje dla przeglądarki związane ze stroną są wymagane.")]
        public string page_meta { get; set; }

        [Required(ErrorMessage = "Słowa kluczowe dla przeglądarki związane ze stroną są wymagane.")]
        public string page_keywords { get; set; }

        [Required(ErrorMessage = "Informacja na temat możliwości edycji strony jest wymagana.")]
        public bool page_editable { get; set; }

        [Required(ErrorMessage = "Informacja na temat możliwości usuwania strony jest wymagana.")]
        public bool page_removable { get; set; }

        [Required(ErrorMessage = "Informacja na temat grupy, do której przypisana jest strona jest wymagana.")]
        public Nullable<int> page_type_id { get; set; }

        [Required(ErrorMessage = "Informacja na temat szablonu, do którego przypisana jest strona jest wymagana.")]
        public Nullable<int> template_id { get; set; }

        [Required(ErrorMessage = "Informacja na temat wersji językowej, do której przypisana jest strona jest wymagana.")]
        public Nullable<int> language_id { get; set; }

    }
}
